Skip to content

Version Packages (rc) - #394

Open
github-actions[bot] wants to merge 1 commit into
nextfrom
changeset-release/next
Open

github-actions[bot] wants to merge 1 commit into
nextfrom
changeset-release/next

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 11, 2026 •

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to next, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

next is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on next.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

react-native-node-api@2.0.0-rc.0

Major Changes

  • 22ce1cb: Adopt Hermes' first-party Node-API (the hermesNapi target on the static_h
    branch) instead of patching Hermes with our own implementation. Addons now run
    against a real Node-API environment created with hermes_napi_create_env(), one
    per addon as in Node, and Node-API is bumped from v8 to v10.

    This drops support for React Native 0.79–0.81: the vendored Hermes is built from
    a pinned static_h commit and requires the Hermes build scripts shipped with
    React Native 0.87 and later. Older React Native versions are still served by
    previously published releases.

Minor Changes

  • 14cd2d2: Provide a hermes_napi_host implementation to the Hermes Node-API environments. This enables thread-safe functions (napi_create_threadsafe_function and friends) and moves napi_async_work execution onto a worker pool — previously the execute callback ran on the JavaScript thread, blocking it for the duration of the work. The host is also in place before an addon's module init runs, so async work and thread-safe functions can now be created during initialization.

  • e213b99: Stop compiling Hermes as part of every iOS app build. The Cocoapods integration
    now resolves the pinned commit with prebuilt-hermes and hands the archive's
    path to React Native through HERMES_ENGINE_TARBALL_PATH — so
    hermes-engine.podspec vendors the prebuilt frameworks instead of running its
    "Build Hermesc" and "Build Hermes" script phases.

    Building Hermes from source remains available and is the faster loop while
    iterating on Hermes itself, since Xcode then rebuilds it incrementally: set
    REACT_NATIVE_NODE_API_HERMES_FROM_SOURCE=1 before pod install. Setting
    REACT_NATIVE_OVERRIDE_HERMES_DIR or HERMES_ENGINE_TARBALL_PATH yourself
    still takes precedence, and Android is unchanged.

  • 774fc07: Add a prebuilt-hermes command, which resolves an archive of the pinned Hermes
    commit prebuilt for Apple platforms and prints its path. The archive holds the
    destroot layout React Native's hermes-engine.podspec expects from a tarball
    pointed at by HERMES_ENGINE_TARBALL_PATH, so an app that sets that variable
    vendors the prebuilt frameworks rather than compiling Hermes as part of its own
    build.

    It is resolved from a local cache, then from a release asset published for the
    pinned commit, and only built locally if neither has it. Its name covers
    everything that changes its contents — the pinned commit, the React Native
    version whose ReactCommon/jsi it is compiled against, the build type and the
    platforms — so a stale archive can never be mistaken for a matching one.

    Nothing consumes this yet: pod install still builds Hermes from source.

  • 2f51021: Route napi_fatal_exception through React Native's ErrorUtils.reportFatalError instead of unconditionally logging and calling abort(). This is what node-addon-api calls whenever an exception escapes a thread-safe-function callback, so a single throwing tsfn callback no longer hard-kills the app: in dev the error and its stack now surface in LogBox, in release RN's default handler rethrows into the native crash path, and apps can observe or handle it via ErrorUtils.setGlobalHandler — the moral equivalent of Node's 'uncaughtException'. The previous stringify-and-abort behavior remains as a fallback for when ErrorUtils/reportFatalError isn't available (non-RN embedders, very early startup) or the handler itself throws.

Patch Changes

  • 3a51f6f: Drop the host's shadowing implementations of Node-API functions that Hermes'
    first-party Node-API already provides, so addons observe Hermes' behavior
    instead of the host's older shims:

    • napi_get_node_version now reports Hermes' own version (release name
      "hermes") instead of unconditionally failing with napi_generic_failure.
    • napi_is_buffer now returns true only for Uint8Array, matching Node,
      instead of any ArrayBuffer/TypedArray.
    • napi_get_buffer_info now returns napi_invalid_arg for non-Uint8Array
      values, matching Node, instead of napi_ok with zeroed output.
    • napi_create_buffer_copy now writes a non-NULL result_data argument, as
      documented, instead of silently ignoring it.
    • napi_create_buffer, napi_create_external_buffer and napi_get_version
      are unchanged in observable behavior, now served by Hermes directly.

    This also fixes a bug where calling napi_get_buffer_info on a non-Uint8Array
    typed array (e.g. a Float64Array) left a process-global flag corrupted, so
    that every subsequent napi_create_buffer/napi_create_external_buffer call
    produced the wrong typed array view.

    napi_fatal_error keeps its host-side implementation, so fatal Node-API
    errors keep reaching logcat on Android instead of only stderr.

  • 5e44159: Load addons through Hermes' hermes_napi_load_module instead of the host's own
    dlopen + dlsym implementation:

    • Addons that register themselves by calling the deprecated
      napi_module_register are now supported. Previously only addons exporting a
      napi_register_module_v1 symbol could be loaded, and the rest resolved to
      undefined.
    • A failing requireNodeAddon now throws an error naming the addon, the path
      that was tried and the underlying reason (e.g. the dlopen error), instead
      of silently resolving to undefined.
    • node_api_get_module_file_name now reports the path the addon was loaded
      from, instead of an empty string.

    This also opens a Node-API handle scope around loading and initializing an
    addon. Without one, the exports object handed to the addon's initialization
    function was not reachable by the garbage collector, so a collection triggered
    during initialization could free it while the addon was still populating it.

  • 648cd63: Fix prebuilt-hermes failing to configure the host Hermes compiler. It passed
    CMAKE_OSX_ARCHITECTURES=arm64;x86_64 to build a universal hermesc, but a
    multi-arch host configure makes llvh's feature try-compiles fail — standard
    headers report as missing and the configure dies with "Host compiler appears to
    require libatomic, but cannot find it". The host compiler is now configured the
    way Hermes and React Native configure it, for the host architecture only.

    hermesc is consequently native to the Mac that built the archive, so the
    archive name now carries the host architecture. An Intel Mac finds no published
    archive for its architecture and builds its own, rather than downloading one
    whose hermesc it cannot execute.

  • 695925b: Fix prebuilt-hermes failing to configure the host Hermes compiler with "Host
    compiler appears to require libatomic, but cannot find it". It exported all
    three deployment targets Hermes' build-apple-framework.sh can ask for to every
    command it ran, including the host compiler build. XROS_DEPLOYMENT_TARGET is
    also a clang driver variable, so clang targeted visionOS against the macOS
    sysroot, and every API marked unavailable there — pthread_mutexattr_init, the
    fd_set helpers reached through unistd.h — failed to compile. Each platform
    build now gets only the deployment target it needs, and the host compiler build
    gets none.

  • Updated dependencies [22ce1cb]

    • weak-node-api@0.2.0-rc.0

weak-node-api@0.2.0-rc.0

Minor Changes

  • 22ce1cb: Adopt Hermes' first-party Node-API (the hermesNapi target on the static_h
    branch) instead of patching Hermes with our own implementation. Addons now run
    against a real Node-API environment created with hermes_napi_create_env(), one
    per addon as in Node, and Node-API is bumped from v8 to v10.

    This drops support for React Native 0.79–0.81: the vendored Hermes is built from
    a pinned static_h commit and requires the Hermes build scripts shipped with
    React Native 0.87 and later. Older React Native versions are still served by
    previously published releases.

cmake-rn@0.8.1-rc.0

Patch Changes

  • Updated dependencies [3a51f6f]
  • Updated dependencies [22ce1cb]
  • Updated dependencies [5e44159]
  • Updated dependencies [14cd2d2]
  • Updated dependencies [e213b99]
  • Updated dependencies [774fc07]
  • Updated dependencies [648cd63]
  • Updated dependencies [695925b]
  • Updated dependencies [2f51021]
    • react-native-node-api@2.0.0-rc.0
    • weak-node-api@0.2.0-rc.0

ferric-cli@0.4.4-rc.0

Patch Changes

  • Updated dependencies [3a51f6f]
  • Updated dependencies [22ce1cb]
  • Updated dependencies [5e44159]
  • Updated dependencies [14cd2d2]
  • Updated dependencies [e213b99]
  • Updated dependencies [774fc07]
  • Updated dependencies [648cd63]
  • Updated dependencies [695925b]
  • Updated dependencies [2f51021]
    • react-native-node-api@2.0.0-rc.0
    • weak-node-api@0.2.0-rc.0

@github-actions
github-actions Bot force-pushed the changeset-release/next branch from 74be91a to 0cfc8c5 Compare August 11, 2026 06:52
@github-actions
github-actions Bot force-pushed the changeset-release/next branch from 0cfc8c5 to 5f3c061 Compare August 11, 2026 07:16
@kraenhansen
kraenhansen force-pushed the next branch 2 times, most recently from 87f54e2 to bedf5dd Compare August 12, 2026 10:13
@github-actions
github-actions Bot force-pushed the changeset-release/next branch from 5f3c061 to 5f4534e Compare August 12, 2026 10:14
@github-actions
github-actions Bot force-pushed the changeset-release/next branch 7 times, most recently from c869c4a to b815394 Compare August 13, 2026 08:27
@github-actions
github-actions Bot force-pushed the changeset-release/next branch 2 times, most recently from 7116a7a to 2b1b187 Compare August 13, 2026 10:51
@kraenhansen kraenhansen self-assigned this Aug 13, 2026
@github-actions
github-actions Bot force-pushed the changeset-release/next branch 12 times, most recently from 790c8f1 to 6da56d5 Compare August 13, 2026 19:00
@github-actions
github-actions Bot force-pushed the changeset-release/next branch from 0479f53 to b44a68f Compare October 11, 2026 20:31

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant